ofsp2026 18_fieldCal

Created time
Mar 28, 2026 08:30 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 18_fieldCal
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:15 AM
📌
Important
访问 https://aerosand.cc 以获取最近更新。

0. 前言

基于前面的讨论,我们练习一个简单场计算的案例。
本文主要讨论
为计算增加简单的物理场
以 OpenFOAM 的方式管理物理场
练习开发库
编译运行 fieldCal 项目

1. 项目准备

终端输入命令,建立项目
测试初始求解器,提供脚本(参考前文脚本)和说明。

2. 增加物理场

拷贝过来的测试算例并没有温度场,我们给算例添加初始温度场。

2.1. 温度场

温度和压力一样是标量,可以通过拷贝压力场文件,修改后得到温度场文件。
终端输入命令,准备温度场文件
修改后得到的温度场文件为

2.2. 主源码

主源码修改为

2.3. 编译运行

编译运行此项目(注意不要清除温度场文件)。
终端输出如下
终端输入命令,对计算结果可视化
注意到 debug_case/ 的时间步文件夹下出现了新时间步的场文件,以 debug_case/0.3/ 为例,其包含的计算结果文件如下
可以查看各个场文件中的计算结果数值。
📌
Warning
打开 0.3/phi 可以看到并没有计算更新值,其他非 p,U 文件也没有计算更新值。这是因为场在创建时候给定的计算公式只是初始化,并不会随着时间推进而计算更新。所以,需要在主源码的时间循环中去计算需要的场。

3. 项目整理

在 OpenFOAM 实际应用中,一般的
  • 场的接入应放入单独的文件 createFields.H
  • OpenFOAM 本身提供 createPhi.H
  • 自定义方法也放入单独文件,如 calculatePressure.H
所以该应用的文件结构调整后为

3.1. createFields.H

场接入文件 createFields.H 为

3.2. calculatePressure.H

自定义方法 calculatePressure.H 为

3.3. 主源码

主源码整理为

3.4. 编译运行

编译运行,可以看到结果是一样的。
项目整理后,
  • 主源码功能划分非常清晰
  • 每个功能都更加易于维护

4. 开发库

当某一类方法的实现可以保留为特定功能以便后续使用,所以可以将它们固定为开发库,以供各种项目随时调用。

4.1. 开发库代码

我们建立开发库 computeVelocityPressure 并提供相应文件。
终端输入命令,建立开发库
建立开发库后,项目的文件结构为
开发库声明 calculateVelocityPressure.H 为
开发库定义 calculateVelocityPressure.C 为

4.2. 开发库 Make

开发库 Make/files 内容为
开发库 Make/options 内容为
该库,强调是这个库,在编译的时候,不会使用到其他更多的库,所以 options 中有这些基础库就够了,不需要另外增加。

4.3. 开发库编译

终端输入命令,编译开发库
终端提示开发库编译成功,可以供项目使用。

4.4. 场的接入

保持 createFields.H 代码不变。

4.5. 主源码

主源码 ofsp_18_fieldCal.C 修改为

4.6. 项目 Make

项目 Make/files 内容为
项目 Make/options 内容为
注意开发库的处理,既要“包含”,也要“链接”。既然指明”路径“,也要指明”名称“。

4.7. 编译运行

编译运行项目。
终端输出如下

4.8. 后处理

我们同样可以通过 paraview 可视化计算结果。
终端输入命令,可视化计算结果。

5. 小结

回顾之前的讨论,我们大概可以感受到数值计算的核心要素所在——时间、网格、物理场。有了这些工具之后,我们便可以将数学物理模型构建为数学方程,从而组建线性代数方程,进行数值求解。不要着急,我们距离求解器编程越来越近了。
本文完成讨论
为计算增加简单的物理场
以 OpenFOAM 的方式管理物理场
练习开发库
编译运行 fieldCal 项目
 

支持我们

📌
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...